The present invention relates to the field of transmitting large data objects in discrete packets or cells over a large scale network such as a cable television network, local area network (LAN) or wide area network (WAN). More particularly, the present invention relates to the field of reassembling a data object based on the reception of packets or cells of the object""s data from two or more failed attempts to transmit the entire packet set.
Blocks of data are routinely sent over large-scale networks between computer equipment at separate locations. Examples of such large-scale networks include the internet, local area networks (LANs) or intranets, wide area networks (WANs) and cable television systems.
The data transmitted between computer equipment in separate locations may be any type of messaging required between the component computers of the system. For example, the data being transmitted may be a request for data or an instruction from one computer to another. Additionally, transmitted data might include input for (or output from) a running application or application programming itself.
The computer originating the transmission may be, for example, a server or a networked personal computer. In a cable television system, data transmission is between a signal head-end and a population of set-top terminals. The signal head-end is the facility from which the service provider broadcasts the cable television signal and controls the cable network. Each subscriber has a set-top terminal which is a box of computer equipment for connecting the subscriber""s television set to the cable network.
In order to facilitate the transmission of large blocks of data, the data block is broken down into a series of packets or cells. The cells are then sent individually over the network and received and reassembled by the receiving computer into the original data object. An illustration of this process is provided in FIG. 1.
FIG. 1 illustrates an exemplary cable television system in which a signal head-end (103) is connected via a cable network (105) with a population of set-top terminals (104). Each of the set-top terminals (104) is located at the location of a subscriber to the cable service and connects the subscriber""s television set to the cable network (105).
Under normal operating circumstances, the head-end (103) continually provides television programming and other data over the cable network (105) to the set-top terminals (104). Occasionally, however, it is necessary for the set-top terminals (104) to transmit data to the head-end (103). As shown in FIG. 1, one of the set-top terminals (104A) possesses a data object (101) which is to be transmitted to the head-end (103). The data object (101) may be, for example, a order for pay-per-view or video-on-demand programming.
In order to transmit the data object (101) to signal head-end (103), the head-end (103) divides the data object (101) into a series of cells (102). The cells are then individually transmitted over the cable network (105) to the head-end (103).
However, due to the heavy downstream transmission of data from the head-end (103) to the terminals (104) that accompanies normal operation of the cable system, it can be difficult for the terminal (104) to transmit a message upstream to the head-end (103). The transmission of any particular cell may collide with data being sent from the head-end (103). Therefore, it is very possible that not all the cells will be transmitted accurately and completely to the head-end (103).
Moreover, any number of terminals in the population of terminals (104) may be communicating with the head-end (103) over the network (105). This network congestion may further result in the complete or partial loss of one or more of the data cells (102) as received by the head-end (103).
Following receipt of a transmission from a terminal (104), the head-end (103) will determine whether it has received an incomplete set of cells (102). If the data from the terminal (104) was not received in its entirety, the head-end (103) will simply signal the terminal (104) to repeat the transmission.
In response to such a request from the head-end (103), the terminal (104) will retransmit all the data cells (102) for the object (101). This process repeats until the head-end (103) receives all the data cells (102) properly and can reassemble the data object (101) therefrom.
Consequently, the amount of traffic on the network (105) is self-multiplying. As upstream traffic from the set-top terminals (104) to the head-end (103) increases, the probability that one or more of the cells (102) in a particular transmission will be lost in transit over the network (105) also increases. As a result, the head-end (103) must demand more repeat transmissions from the set-top terminals (104) thereby further burdening the network (105) with increased upstream traffic. The increased upstream traffic, in turn, decreases the probability that any particular transmission will be made completely and accurately, thereby restarting the cycle.
The loss of data cells during upstream transmission can be minimized by, for example, providing a separate signal path from each of the set-top terminals (104) to the head-end (103) to prevent the collision of data moving in both directions. Additionally, more expensive and complicated transmission protocols, excessive bandwidth in the transmission path and top-quality computer equipment can decrease the chance of lost data cells. However, such measures increase drastically the complexity and expense of the system as compared to a less complex system which more frequently suffers from a lost data cell.
Therefore, there is a need in the art for an improved method and apparatus for transmitting a data object which has been broken into a set of data cells upstream over a computer network, particularly from a cable television system set-top terminal to a head-end facility without unduly increasing the cost of the system.
It is an object of the present invention to meet the above-described needs and others. Specifically, it is an object of the present invention to provide an improved method and apparatus for transmitting a data object which has been broken into a set of data cells over a computer network which is prone to losing occasional data cells during transmission.
Additional objects, advantages and novel features of the invention will be set forth in the description which follows or may be learned by those skilled in the art through reading these materials or practicing the invention. The objects and advantages of the invention may be achieved through the means recited in the attached claims.
To achieve these stated and other objects, the present invention may be embodied and described as a system including networked units of computer equipment located at different locations in which at least one unit of the computer equipment transmits a data object divided into a group of data cells to another unit of the computer equipment over a network under conditions prone to loss or unsuccessful transmission of one or more of the data cells. The system includes a first computer or unit of computer equipment including a memory unit; and a second computer or unit of computer equipment transmitting the group of data cells over a network to the first unit of computer equipment. In a preferred embodiment, the first unit of computer equipment is a head-end facility in a cable television system, and the second unit of computer equipment is a set-top terminal in the cable television system.
The first unit of computer equipment stores data cells received from the second unit of computer equipment in the memory for later reference regardless of whether the group of data cells is completely received in a particular transmission. After each transmission from the second unit of computer equipment, the first unit of computer equipment will determine if, between the most recently received transmission and previous transmissions from the second unit of computer equipment which are stored in the memory, all data cells of the group of data cells have been received.
If all data cells of the group of data cells have been received, the first unit of computer equipment will reassemble the data object by collecting the necessary data cells from the various failed transmissions that have been received and stored. If all data cells of the group of data cells have not been received, the first unit of computer equipment will signal the second unit of computer equipment to retransmit the group of data cells to the first unit of computer equipment over the network.
The system of the present invention may also include a timer in the first unit of computer equipment. If a predetermined period of time has elapsed during which the second unit of computer equipment has tried unsuccessfully to transmit all of the data cells of the group of data cells to the first unit of computer equipment, the first unit of computer equipment will not signal the second unit of computer equipment for a retransmission of the data cells.
The present invention also encompasses the method used by the system described above. In other words, the present invention includes a method for transmitting a data object between separately located, networked units of computer equipment in which a first unit of the computer equipment transmits the data object divided into a group of data cells to a second unit of the computer equipment over a network under conditions prone to loss or unsuccessful transmission of one or more of the data cells.